package com.changcheng.project.yuminsi.mapper;

import com.changcheng.project.yuminsi.domain.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;


/**
 * @author yuminsi
 * @description
 * @date 2020/8/20 11:15
 * @since
 */
@Repository
public interface CommonMapper {
    /**
     * 根据账户名查询账户信息
     * @param accountName
     * @return
     */
    OperInfoDomain queryOperInfoByAccountName(@Param("accountName") String accountName);

    /**
     * 根据token查询账号信息
     * @param token
     */
    OperInfoDomain queryOperInfoByToken(@Param("accessToken") String token);

    /**
     * 根据账户id更新token
     * @param operInfoDomain
     */
    void updateOperInfo(OperInfoDomain operInfoDomain);

    /**
     * 根据账户id查询账户信息
     * @param accountId
     * @return
     */
    OperInfoDomain queryOperInfoByAccountId(@Param("accountId") Long accountId);

    /**
     * 根据accountId修改密码
     * @param operInfoDomain
     */
    void modifyPasswordByAccountId(OperInfoDomain operInfoDomain);




    /**
     * 根据plateNo、vin、phone查询账户信息
     * @param plateNo
     * @param vin
     * @param phone
     * @return
     */
    AcctInfoDomain queryAcctInfoByAll(@Param("plateNo") String plateNo, @Param("vin") String vin, @Param("phone") String phone);
    /**
     * 根据plateNo、vin查询账户信息
     * @param plateNo
     * @param vin
     * @return
     */
    AcctInfoDomain queryAcctInfoByPlateNoAndVin(@Param("plateNo") String plateNo, @Param("vin") String vin);
    /**
     * 根据plateNo和phone查询账户信息
     * @param plateNo
     * @param phone
     * @return
     */
    AcctInfoDomain queryAcctInfoByPlateNoAndPhone(@Param("plateNo") String plateNo, @Param("phone") String phone);

    /**
     *
     * @param vin
     * @param phone
     * @return
     */
    AcctInfoDomain queryAcctInfoByVinAndPhone(@Param("vin") String vin, @Param("phone") String phone);

    /**
     * 根据plateNo查询账户信息
     * @param plateNo
     * @return
     */
    AcctInfoDomain queryAcctInfoByPlate(@Param(("plateNo")) String plateNo);

    /**
     * 根据手机号查询账户表
     * @param phone
     * @return
     */
    List<AcctInfoDomain> queryAcctInfoByPhone(@Param("phone") String phone);

    /**
     * 根据vin查询账户表
     * @param vin
     * @return
     */
    AcctInfoDomain queryAcctInfoByVin(@Param("vin") String vin);

    /**
     * 根据账户id查询账户信息
     * @param acctId
     * @return
     */
    AcctInfoDomain queryAcctInfoByAcctId(@Param("acctId") String acctId);

    /**
     * 根据订单id查询账户表
     * @param orderId
     * @return
     */
    AcctInfoDomain queryAcctInfoByOrderId(@Param("orderId") String orderId);

    /**
     * 根据手机号查询用户信息
     * @param phone
     * @return
     */
    UserDomain queryUserInfoByPhone(@Param("phone") String phone);

    /**
     * 根据vin查询车辆信息
     * @param vin
     * @return
     */
    CarDomain queryCarInfoByVin(@Param("vin") String vin);





    /**
     * 注销前，改变etc状态
     * @param acctInfoDomain
     */
    void updateAcctInfoByAcctId(AcctInfoDomain acctInfoDomain);

    /**
     * 根据acctId注销账户信息
     * @param acctId
     */
    void deleteAcctInfoByAcctId(@Param("acctId") String acctId);

}
